﻿using M.Entities;
using M.EntityConfigurations;
using M.Extensions;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace M
{
    public class MContext : DbContext
    {
        public DbSet<User> User { get; set; }

        public MContext(DbContextOptions<MContext> options)
        : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 这个方法放在最前，或者最后，效果似乎一样
            base.OnModelCreating(modelBuilder);

            // 自动加载该项目下的所有IEntityTypeConfiguration约束
            //modelBuilder.ApplyConfigurationsFromAssembly(GetType().Assembly);
            modelBuilder.ApplyConfiguration(new UserConfiguration());

            // 最后改名字的这类的代码，放到最后，等到所有约束都生效后，再调用该方法。
            modelBuilder.TableMappingTo(
                e => { return true; }, // 校验是否需要处理名称
                e => { return e.ToLower(); },
                e=> { return e.ToLower(); }
            );
        }
    }
}
